package belf.migrate.api.sink;

import belf.migrate.api.common.JobAware;
import belf.migrate.api.common.PluginIdentifierInterface;
import belf.migrate.api.table.schema.CatalogTable;

import java.io.Serializable;
import java.util.List;

public interface Sink extends Serializable, PluginIdentifierInterface, JobAware {
    default List<CatalogTable> getCosumedCatalogTables() {
        throw new UnsupportedOperationException(
                "getCosumedCatalogTables method has not been implemented.");
    }

    void start();

    void stop();

    /**
     * 在Sink paused期间，可以做一些事情，比如给表增加外键
     */
    void pause();

    /**
     * 在所哟错误修正了，或所有的准备工作补充完整（比如增加外键），提供该方法恢复Sink执行
     */
    void resume();
}
